avatar
童琦杰
  1. 创建项目 vue create my-project-name 安装路由 安装组件 npm install vue-router@4 配置路由规则、路由模式 //codefile:main.ts import { createRouter, createWebHistory } from 'vue-router' import Home from './components/Home.vue' // 配置路由规则 const routes = [ { path: '/', component: Home }, ] // 创建router,使用HTML5 history模式,并且基路径'base' const router = createRouter({ history: createWebHistory('base'), routes: routes }) // 使用router createApp(App).use(router).mount('#app') 设置路由视图 //codefile:App.vue <template> <!-- 路由视图 --> <router-view></router-v
  2. 这是一部教人怎么成为一个领导人的书。 我还不是一个领导人,打算朝着当领导的方向努力。书中强调的学会当领导的7个关键点。 1.设定愿景和关键要务; 2.管理好时间(这点其实无论做什么都重要);3.定时给与反馈和接受反馈,而不仅仅通过年终的KPI指标(目的是让员工成长,和让自己进步); 4.接班规划和工作授权; 5.对于不足,做出相应调整; 6.领导要成为员工典范; 7.想办法发挥潜能,让自己变得强大(这个貌似也是做任何事情,都需要的); 大部分对于我来说,没有太多的感触。 但是第四点较触动心灵。领导人的责任是让别人帮你完成工作,而非执行者,用力在人身上而非事情本身上。学会培养他人,这样,提拔了你,才有人干你的活。 学会授权的话术:XYZ这几件事,完全由你决定,我不参与。而ABC这几件事,向我确认,其他的事情,你可以来问我,也可以自己决定。 其次就是第我五点,怎么知道公司不足,觉得方法挺好。下属一般不会直言领导的不足,如果想知道自己或者公司方面的不足,可以通过这样的方式询问 “如果公司从0开始,你会怎么做?”,员工大多数会针对公司的不足,弊端,说出自己的建议。是真正收取了员工的意见。 最后,第一点的设定愿景,还没
  3. 对容器指定flex布局。 .container { display: flex; display: -webkit-flex; /* Safari */ } Webkit 内核的浏览器,必须加上-webkit前缀。 flex-direction 指定容器内项目的主轴排序方向。 row(默认值):水平从左往右。 row-reverse:水平从右往左。 column:垂直从上往下。 column-reverse:垂直从下往上。 flex-wrap 指定容器内项目超出边界换行方式。 nowrap(默认):不换行。 wrap:换行,超出边界的元素换行(下方)排列。 wrap-reverse:换行,超出边界的元素换行(上方)排列。 justify-content 指定容器内的项目主轴方向对齐方式。 flex-start(默认值):左对齐 flex-end:右对齐 center:居中 space-between:两端对齐,项目之间的间隔都相等。 space-around:每个项目两侧的间隔相等。 对齐方式跟flex-direction属性有关。 align-items 指定容器内的项目在交叉轴(与主轴垂直方向)上的对齐方
  4. 对话,交谈后,产生了效果,对事情的发展有影响了,叫做关键对话 这是一本教人怎么沟通的书籍。 书中列举了不少有助于对话的方式方法。 1.极怒时勿与人书,极喜时勿予人物。 在很生气时,不要与人书信,交谈,自己先冷静。 在很开心时,不要随便答应赠与别人东西。 安全对话,气氛缓和的方法: 对自己强调对话目的,时刻保持尊重。 2.从心开始,把心管好。 回归事情本身,我们的痛苦,不是由他人引起。 A,事情发生了;B,你的看法;C,你的心情怎么样? 我们不应该总是执着的追求改变A,来达到C心情的改变,其实许多时候,应该改变的是B你的看法。 3.对话前,问自己几个问题 a.我希望对话达成目标是什么? b.希望对方达成的目标是什么? c.希望达成双方共同的目标是什么? d.为达成以上目标,我要怎么做? 4.做个双核的对话人 一核处理对话内容,一核处理谈话气氛(需要优先处理)
  5. 转义字符 . $ ^ { [ ( | ) * + ? \ 字符匹配 [character_group] 匹配 character_group中的任何单个字符。 [^character_group] 匹配不在character_group中的任意单个字符匹配。 [first-last] 匹配从first到last的范围中的任意单个字符匹配。 . 匹配除\n之外的任意单个字符。 \w 匹配任何单词字符,等同于[A-Za-z0-9_]。 \W 匹配任何非单词字符。 \s 匹配任何空白字符。 \S 匹配任何非空白字符。 \d 匹配任何十进制数字。 \D 匹配不是十进制数的任意字符。 定位点 ^ 默认情况下,必须从字符串的开头开始匹配;在多行模式中,必须从该行的开头开始。 $ 默认情况下,匹配必须出现在字符串的末尾,或在字符串末尾的 \n 之前;在多行模式中,必须出现在该行的末尾之前,或在该行末尾的 \n 之前。 分组构造 分组构造描述了正则表达式的子表达式,通常用于捕获输入字符串的子字符串。 (子表达式) 捕获匹配的子表达式并将其分配到一个从 1 开始的序号中。 (?<名称>子表达式) 将匹配的子表达式捕获到一个命名
  6. URI匹配方式 1.前缀匹配 无修饰符: 前缀匹配 =: 精确匹配 ^~: 前缀匹配,与无修饰符的区别是不再匹配正则表达式 2.正则表达式匹配 ~*: 大小写不敏感 ~: 大小写敏感 匹配优先级(顺序) 1.首先按照最长匹配原则校验前缀匹配方式的location。 如果匹配到的location带有修饰符^~或=,则不再进行第二步匹配,直接应用该location。 如果匹配到location暂时先记下来,继续进行第二步。 2.然后按配置文件里的顺序依次校验正则表达式匹配方式的location。 如果匹配到location就停止继续校验并且应用该location。 如果未匹配到location就应用第一步前缀匹配方式匹配到的location。 Location示例 location = / { root /directory/of/web/static/files; try_files $uri $uri/ /index.html; index index.html; } location /api/ { proxy_pass your_api_address; } location / { root /dire
  7. 字符串查询 输出参数为Int类型,而非String.Index类型,更易理解 public extension String { func indexOf(value: Character) -> Int? { if let index = self.firstIndex(of: value) { return self.distance(from: self.startIndex, to: index) } else { return nil } } func lastIndexOf(value: Character) -> Int? { if let index = self.lastIndex(of: value) { return self.distance(from: self.startIndex, to: index) } else { return nil } } } 子字符串提取(substring) 输入参数采用Int类型,而非String.Index类型,编码更加简洁。同时处理了索引越界问题。 public extension String { func substring(startI
  8. Designated Initializers和Convenience Initializers Rule 1 A designated initializer must call a designated initializer from its immediate superclass. Rule 2 A convenience initializer must call another initializer from the same class. Rule 3 A convenience initializer must ultimately call a designated initializer. Safety check 1 A designated initializer must ensure that all of the properties introduced by its class are initialized before it delegates up to a superclass initializer. As mentioned above, the memory
  9. 系统目录 缓存目录、下载目录、文档目录 public static var cachesDirectory: URL? { get { return FileManager.default.urls(for: .cachesDirectory, in: .userDomainMask).first } } public static var downloadsDirectory: URL? { get { return FileManager.default.urls(for: .downloadsDirectory, in: .userDomainMask).first } } public static var documentDirectory: URL? { get { return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first } } 获取文件/目录大小 public static func sizeOf(file: URL) -> Int? { if !File.exists(file: f
  10. 标准格式ES256私钥生成 openssl ecparam -genkey -name prime256v1 -noout -out es256_private_key.pem 生成的标准格式es256私钥示例 //codefile:es256_private_key.pem -----BEGIN EC PRIVATE KEY----- MHcCAQEEIAhaV62YXNexj9/GY9EUcz25G69/afOiF2Vh0CxYlKRvoAoGCCqGSM49 AwEHoUQDQgAEuXR/yRJaNAAMGC0gaB/5H9f8ySyN5gGP3pUUotZq5UwrFTufXCG3 QC0rLKQpqy8t1/GQU+S2Hsrwf/PvB/o7KQ== -----END EC PRIVATE KEY----- 将标准格式ES256私钥转成PKCS8格式ES256私钥 openssl pkcs8 -topk8 -nocrypt -in es256_private_key.pem -out es256_pkcs8_private_key.pem 生成的pkcs8格式es256私钥示例 //codefi
© 2015-2022 tongqijie.com 版权所有沪ICP备17000682号