会话管理
Session+cookie,token+存储(redis)
核心:
JWT
XSS核心就是 同源访问,就是正常用户的访问,原因在于 别的用户在提交表单时 写出了一些特殊js脚本,然后服务端没有转义,所以造成了, 当前用户再浏览到 哪个提交表单用户的提交内容是,自然的执行了脚本,很可怕,所以这种拦截,再一开始就必须杀死,处理:转义
进程:OS分配资源的基本单位,一个进程的启动,os会为他分配属于它的内存空间
线程:cpu调度的基本单位,没有独立空间,共享进程的内存空间(1m)
纤程:就是线程中的线程,需要用户程序处理线程时模拟操作系统对线程的调度,Fiber(4k空间,切换快)(很短计算任务,不需要内核打交道)(IO资源还是要线程)
1 |
|
1 |
|
1 | @Override |
1 | @Override |
Engine – > Host–>content
1 | protected void deployDirectory(ContextName cn, File dir) { |
1 | StandardContent |
1 | @Override |
1 | /** |
1 | protected void webConfig() { |
1 | private WebXml getDefaultWebXmlFragment(WebXmlParser webXmlParser) { |
1 |
|
1 |
|
1 | public void body(String namespace, String name, String text) throws Exception { |
弹出当前对象
1 | @Override |
1 |
|
1 | public void body(String namespace, String name, String text) throws Exception { |
啥也不干
1 | begin啥也不干 |
1 | @Override |
与server一样,不过这个对象的class是由标签指定的
会给Server设置上监听器
xml 是可扩展标识语言(Extensible Markup Luanguage)就是开发者符合xml命名规则的基础之上,可以根据自己的需求定义自定义标签
可读性强
XML的定义是必须只有一个根节点。
1 | <!-- 文件头,固定写法 --> |
专门为java开发的 dom解析框架
是一次性读到内存,这样的好处可以随意的增上改查
缺点,只适合文件小的场景
对dom的封装,因为dom解析比较繁琐
创建解析器 SAXReader()
1 | SAXReader saxReader = new SAXReader(); |
获取Document对象(树结构)
1 | File file =new File("a.xml"); |
获取xml根节点
1 |
|
遍历树
1 | public static void main(String[] args) throws DocumentException { |
边读边解析,大文件解析,但是不支持随意修改
使用工厂创建解析对象
1 | SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); |
创建回调的处理器
1 | class MyHandler extends DefaultHandler{ |
1 |
|
1 | private final AbstractProtocol<S> proto; |
1 | @Override |
1 | @Override |
1 | @Override |
1 | @Override |
获取servletClass 包装到wrapperData中
1 | protected boolean postParseRequest(org.apache.coyote.Request req, Request request, |
Servlet调用流程
1 | @Override |
1 | @Override |
1 | @Override |
1 | @Override |
1 | @Override |
1 | public final void invoke(Request request, Response response) |
1 | @Override |
1 |
|
1 | private void internalDoFilter(ServletRequest request, |
1 | @Override |
1 |
|
1 |
|
tomcat源码编译: https://blog.csdn.net/qq_35262405/article/details/101780644
1 |
|
1 | @Override |
1 |
|
1 | @Override |
1 |
|
1 | protected void initInternal() throws LifecycleException { |
1 | @Override |
1 |
|
1 |
|
1 |
|
1 | protected static class BlockPoller extends Thread { |
1 | public void run() { |
1 | @Override |
1 |
|
1 |
|
1 | @Override |
1 |
|
1 |
|
1 | @Override |
1 |
|
1 |
|
1 | private void addListeners(Container container) { |
1 | private void registerHost(Host host) { |
1 | private void registerContext(Context context) { |
1 | private void prepareWrapperMappingInfo(Context context, Wrapper wrapper, |
1 | @Override |
1 |
|
1 |
|
1 | public final void start() throws Exception { |
1 | public void startInternal() throws Exception { |
1 | public void createExecutor() { |
1 | protected LimitLatch initializeConnectionLatch() { |
1 |
|
1 | @Override |
1 | protected void processKey(SelectionKey sk, NioSocketWrapper attachment) { |
1 | protected final void startAcceptorThreads() { |
1 | protected class Acceptor extends AbstractEndpoint.Acceptor { |
1 | protected boolean setSocketOptions(SocketChannel socket) { |
1 | public void register(final NioChannel socket) { |
1 | public static class PollerEvent implements Runnable { |
这里以Http协议来阅读
:这是netty提供的一个解码器的抽象
1 |
|
1 |
|
1 |
|
理财
理财只是为了让你的钱用到具体的某个地方,不要乱用,不要想着这个能赚大钱
投资理财的元规则是用自己用不到的钱来投资:务必要使用自己用不到的钱(这些钱丢了不会造成对生活的实质性影响,只是心疼,如果这些钱用来买房,结婚,孩子上学有明确的指向性用途,那么绝对不能用来投资)
投资理财的核心三原则,安全性—>流动性—>盈利性
安全性,钱不能交给没有法律保障的地方
流动性,资产变现的能力
盈利性,不要看的太重
投资要风险分摊,不要纠结于单一标的(底),把资金分散到不同的投资标的,是控制风险的有效手段 (一部分放在银行理财,一部分放在银行存款,一部分放在基金,千万不要把钱分散放在同一领域,例如:一部分团贷,一部分e租宝,都是p2p领域,这不叫风险分摊)
不要投资看不懂的东西:懂了就是 明确直到产品是怎么运作的,知道是怎么赚钱的,知道是怎么赔钱的
投资就投资,不要加杠杆:什么交杠杆,把信用卡透支出来的钱来炒股(就是1块钱 你能赚10快。那么1000 你就能赚一万,注意这一千可能会打水漂,不是百分百收益的,自己要根据上面几点,特别是第一点来看待具体用多少) 能够承受住意外的 阈值
不要盲目相信高回报率的东西:还是要搞懂它怎么盈利的,还要想自己凭什么拿这么高的收益
也不要学专业人士的操作:不要轻易去学
没有人是靠投资理财致富的
不犯错比激进更重要
克制贪欲,控制风险,分散投资标的,然后就是慢慢的试错(找到让自己舒适的平衡点)
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia-plus根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true