【React源码分析之一】JSX 转化成JS 我们在开发react 过程中一般都是用JSX, 相当于enhanced JavaScript. 能再JS代码中嵌入HTML.JSX是通过Babel翻译成JS代码的, 可以通过这个Babel playground来看看JSX中的html被翻译成什么JS代码function comp(){}<comp id='id' key='key'> <span>w...
【Javascript】彻底搞懂闭包(closure)和原型(prototype) 首先讲讲为什么会有闭包和原型。Javascript的最初就是一款脚本语言(名字中带scrip就足以说明这一点),用来开发网页,所以语法简洁,没有面向对象语言的概念(多态,继承,封装。。。),甚至没有线程。为了实现多态,继承和封装,我们看看js是如何实现这些OOP特性的。封装封装的概念非常简单,就是将用户不需要知道的数据和方法隐藏起来,外部无法直接访问。在Java中,可以用privat...
【操作系统】进程与线程 为什么会有进程?以前的计算机性能较差,操作系统只支持单任务,也就是一次只能执行一个任务,当这个任务执行完成之后,才能执行下一个任务,例如MSDOS。当该任务进行IO时,CPU会处于空闲状态。随着计算机性能增强,出现了多任务操作系统,操作系统可以将多个任务同时加载到内存中,并发执行。当某个任务进行IO时,操作系统将该任务挂起,切换到其他需要执行任务(通过cpu中断技术实现)。因此,为了方便...
【操作系统】文件系统(一) Prerequiste: 磁盘的结构和工作原理为什么要引入文件系统?在大容量magnetic disk出现之前,数据和程序都是存储在磁带上,那时还没有文件的概念。当大容量的磁盘出现了以后,需要将数据或者程序存储在磁盘上。如果没有文件,我们只能自己管理数据在磁盘上的位置。例如一个程序或者数据被分成若干个子块,每个子块都分布在磁盘的不同的位置,读取一个数据时,要手动地逐个读取每个子块才能获取...
JS中的this问题 最近在使用react native开发安卓app的过程中,总是遇到this指针所在上下文切换,导致从this中调用对象或者方法时,总是报xxx is undefine, 这是因为JS中的this十分灵活,随着代码执行上下文的不同,this指针所指的当前对象也在不断变化。尤其是下面一种典型情况:在实现Component 的render 方法时,例如我们需要为一个button绑定一个onPress...
【Https原理入门】 将数据加密在进行传输:一种方式:HostA: 文件---------> Rar(加密)------->传输-------->HostB:使用密码进行解压获取文件对称加密和非对称加密:对称秘钥加密:非对称加密: 公开秘钥加密。需要一对秘钥(私钥,公钥)。两个秘钥是数学相关。用某个user的秘钥加密所得的信息,只能用该用户的另一个密钥才能解密。只知道其中一个,并不...
【计算机网络】不同网段内主机如何通信 学习计算机网络如果只是被动的接受知识的话,不但枯燥,效率低下,而且理解也不够深。这里我推荐一款网络仿真软件cisco packet tracer。这款软件最有价值的地方在于用户可以通过软件来模拟真实的网络,能够零成本搭建一套计算机网络。我们可以边学网络边用这个软件来进行仿真,验证所学知识。下载链接:https://www.netacad.com/courses/packet-tracer 学...
【计算机网络】网络上两台主机是如何通过IP地址和MAC地址进行通信的 互联网上的两台主机HostA和 HostB想要进行通信的流程,那么主机A将需要知道自己的ip,mac 以及主机B的ip, mac。但是主机B的mac地址主机A是不知道的,于是主机A如果将他自己的IP与子网掩码进行 & 与运算得到一个ip1, 然后将主机B的ip与这个子网掩码进行相同运算得到一个ip2, 如果ip1 等于 ip2, 那么此时A与B属于同一子网。否则不属于一个子网。两台主...
【计算机网络】计算机网络物理层,数据链路层和网络层的理解 对于初学者甚至许多计算机科班出身的同学来说,学习网络和操作系统一样,感觉十分抽象,学完总有一种朦朦胧胧的感觉,因为毕竟对于绝大多数人来说,工作中都不需要接触这些东西。但是作为一个较真的程序员,还是想慢慢深入理解其中的奥秘,这也就是我想边学边写博客的原因,也希望能给初学者一些借鉴。有疏漏之处,请不吝赐教!OSI将计算机网络可以分为七层模型,从底层网上分别是物理层,数据链路层,网络层,... ,应...
【设计模式】Builder建造者模式 需求:当创建某一个对象的时候,必须按照的一定的顺序对成员变量进行初始化,所以为了避免用户在创建的时候打乱这个顺序,就有了Builder设计模式。非常简单有效,这种模式在许多框架中被大量使用。//假设我们在创建MyData对象的时候,需要用按照d1,d2,d3的顺序对它进行初始化public class MyData { private int d1; private i...
【设计模式】一文彻底搞懂装饰器(Decorator)设计模式 网上关于装饰器(decorator)模式的教程很多,但是很少有能讲的很清楚的,所以有了这篇文章。在讲解装饰器模式之前,先看看为什么要使用装饰器模式。假设我们要为一个咖啡馆设计一套下单和结算系统,咖啡管的产品有茶,咖啡,橙汁三种产品,售价分别为5,10,15, 客人可以在饮料中加入一些搭配,比如咖啡可以加奶、加糖,橙汁可以加冰,茶也可以加奶。假设客人需要付费才能加配料。那我们先来思考一下如何...
java 使用管程(monitor) 实现生产者-消费者模式 这是继java 使用synchronized, wait(), notifyAll() 实现生产者-消费者模式的下一篇。让我们先来看看什么是管程。管程的英文叫Monitor, 翻译过来时监视器的意思。为什么要使用管程呢? 之前使用信号量实现了同步互斥,但是信号量有个一个缺点,那就是P操作和V操作很容易搞错,如果一个地方进行了P操作,同步代码块执行完毕后忘记执行V操作,那么很容易引起死锁、饥饿等...
React Native org.gradle.process.internal.ExecException: Process 'command 'node'' finished with non-z 最近被一个react native 的bug搞疯了,具体信息如下:app:bundleReleaseJsAndAssetsorg.gradle.process.internal.ExecException: Process 'command 'node'' finished with non-zero exit value 1结果发现是根目录下的.babelrc文件惹的祸,这个文件b...
java 实现一个同步的stack 用java 实现了一个线程安全的栈(参考了tomcat源码)public class SynchronizedStack<T> { public static final int DEFAULT_SIZE = 128; private static final int DEFAULT_LIMIT = -1; private int size; ...
java 使用信号量Semaphore实现生产者-消费者模式 这是继许上一篇java 使用synchronized, wait(), notifyAll() 实现生产者-消费者模式。信号量Semaphore,跟交通信号等非常类似(Semaphore翻译过来就是信号灯的意思),以下面这幅图为例如果两条铁轨都是空的,那么此时信号灯是绿色(信号量为2),允许火车通行。如果有列车请求通行则放行,同时信号灯变为黄色(信号量减一):当两条铁轨都有列车...
java 使用synchronized, wait(), notifyAll() 实现生产者-消费者模式 对于任何一种模式,在实现之前我们都应该明确这种模式对线程同步及互斥的要求。对于生产者-消费者模式, 我们有如下同步及互斥要求:线程互斥要求生产者之间是互斥的,也即同时只能有一个生产者进行生产 消费者之间是互斥的,也即同时只能有一个消费者进行消费 生产者消费者之间是互斥的,也即生产者消费者不能同时进行生产和消费线程同步要求容器满时,生产者进行等待 容器空是,消费者进行等待有了上述需...
Java 多线程 锁重入的理解 // 锁的重入,synchronized是可重入的public class Demo { public synchronized void a(){ try { Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(...
彻底搞清楚 java 多线程单例模式(singleton)的双重检查锁 不涉及多线程的情况下实现单例模式是非常简单的,有两种实现方式,Lazy 和 Eager 模式:public class SingletonEager { //Eager模式,当Singleton被ClassLoader加载的时候创建Singleton对象 private static SingletonEager _instance = new SingletonEager(...
用java Thread interrupt的时候为啥会抛出异常 在用java Thread interrupt的时候为啥会抛出异常?```public class Demo1 extends Thread { @Override public void run(){ while (!interrupted()) { try { Thread.sleep(200);...
【系统设计】设计一个TinyURL系统 题目:设计一个短连接服务,可以将长链接转换为短连接,也可以通过短连接访问目标网站系统设计的SNAKE 原则:1.Scenario: 使用场景 非常简单,只有两个功能: (1)长连接转换为短连接:String shortenURL(String longURL) (2)短连接转化为长连接,能够访问目标网站: String getLongURL(String shortURL)2.Nece...