首页 文章 精选 留言 我的

精选列表

搜索[workspace共享],共10006篇文章
优秀的个人博客,低调大师

Laravel 前后台共享数据

在视图模板中初始化JS变量。 <script> var app = <?php echo json_encode($array); ?>; </script> 5.5以后可以这么写, 用 @json Blade 指令替代手动 json_encode <script> var app = @json($array); </script> 曾经在多语言项目中这么用过。 <script> window.Laravel = { csrfToken: '{{ csrf_token() }}', Locale: '<?php echo \App::getLocale(); ?>', Languages: <?php echo json_encode( [ 'scaffold' => __('scaffold::t'), 'module_dashboard' => __('module_dashboard::t'), 'module_user' => __('module_user::t'), 'setting' => __('setting::t'), ], JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);?> }; </script> Laravel变量传入在vue组件中 定义组件 <script> export default { props: ['surveyData'], mounted () { // Do something useful with the data in the template console.dir(this.surveyData) } } </script> 注入变量 <survey-component :survey-data="'{!! json_encode($surveyData) !!}'"></survey-component> 参考:https://medium.com/@m_ramsden/passing-data-from-laravel-to-vue-98b9d2a4bd23https://laravel-china.org/docs/laravel/5.6/blade/1375

优秀的个人博客,低调大师

基于Redis的Session共享示例

在单机情况下,Session可由部署在服务器上的Web容器来管理 (如Tomcat、JBoss)。 在负载均衡的集群环境下,负载均衡可能将请求分发到不同的服务器上去,在这种情况,需要将有状态的session统一管理起来。 本文将给出一个简单的示例,将session存放到Redis统一管理。因为只是一个示例,所以Nginx只用1台,Tomcat使用2台,Redis一个或者简单的主从。 环境准备 准备Redis 下载redis-3.2.3.tar.gz (Redis.io下载) 解压缩redis tar-zvxfredis-3.2.3.tar.gz 将解压缩后的redis文件名改成好记点的6379(可以不重命名)。 然后使用make && make install完成安装。 [root@dev18redis]#mvredis-3.2.36379 [root@dev18redis]#cd6379 [root@dev186379]#make&&makeinstall 安装成功之后,出现如下显示: 因为本版本使用的Redis版本是3.2.3, 在这个版本中,有protected mode的属性(默认是yes),进入6379目录,修改redis.conf配置文件。从而,其它网段的程序可以去访问,否则可能会出现如下的错误。 Exceptioninthread"main"redis.clients.jedis.exceptions.JedisDataException:DENIEDRedisisrunninginprotectedmodebecauseprotectedmodeisenabled,nobindaddresswasspecified,noauthenticationpasswordisrequestedtoclients.Inthismodeconnectionsareonlyacceptedfromtheloopbackinterface.IfyouwanttoconnectfromexternalcomputerstoRedisyoumayadoptoneofthefollowingsolutions:1)Justdisableprotectedmodesendingthecommand'CONFIGSETprotected-modeno'fromtheloopbackinterfacebyconnectingtoRedisfromthesamehosttheserverisrunning,howeverMAKESURERedisisnotpubliclyaccessiblefrominternetifyoudoso.UseCONFIGREWRITEtomakethischangepermanent.2)AlternativelyyoucanjustdisabletheprotectedmodebyeditingtheRedisconfigurationfile,andsettingtheprotectedmodeoptionto'no',andthenrestartingtheserver.3)Ifyoustartedtheservermanuallyjustfortesting,restartitwiththe'--protected-modeno'option.4)Setupabindaddressoranauthenticationpassword.NOTE:Youonlyneedtodooneoftheabovethingsinorderfortheservertostartacceptingconnectionsfromtheoutside. atredis.clients.jedis.Protocol.processError(Protocol.java:117) atredis.clients.jedis.Protocol.process(Protocol.java:151) atredis.clients.jedis.Protocol.read(Protocol.java:205) atredis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:297) atredis.clients.jedis.Connection.getIntegerReply(Connection.java:222) atredis.clients.jedis.Jedis.sadd(Jedis.java:1057) atjedis.example.Main.main(Main.java:36) 修改后保存。 进入src目录,启动Redis服务 [root@dev186379]#cdsrc [root@dev18src]#./redis-server 成功启动显示如下: [root@dev18src]#./redis-server 10051:C22Dec09:50:59.653#Warning:noconfigfilespecified,usingthedefaultconfig.Inordertospecifyaconfigfileuse./redis-server/path/to/redis.conf _._ _.-``__''-._ _.-```.`_.''-._Redis3.2.3(00000000/0)64bit .-``.-```.```\/_.,_''-._ (',.-`|`,)Runninginstandalonemode |`-._`-...-`__...-.``-._|'`_.-'|Port:6379 |`-._`._/_.-'|PID:10051 `-._`-._`-./_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'|http://redis.io `-._`-._`-.__.-'_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'| `-._`-._`-.__.-'_.-'_.-' `-._`-.__.-'_.-' `-.__.-' `-.__.-' 10051:M22Dec09:50:59.656#Serverstarted,Redisversion3.2.3 10051:M22Dec09:50:59.656#WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.Tofixthisissueadd'vm.overcommit_memory=1'to/etc/sysctl.confandthenrebootorrunthecommand'sysctlvm.overcommit_memory=1'forthistotakeeffect. 10051:M22Dec09:50:59.656#WARNINGyouhaveTransparentHugePages(THP)supportenabledinyourkernel.ThiswillcreatelatencyandmemoryusageissueswithRedis.Tofixthisissuerunthecommand'echonever>/sys/kernel/mm/transparent_hugepage/enabled'asroot,andaddittoyour/etc/rc.localinordertoretainthesettingafterareboot.RedismustberestartedafterTHPisdisabled. 10051:M22Dec09:50:59.656*Theserverisnowreadytoacceptconnectionsonport6379 准备Tomcat 下载tomcat,并解压缩为两个tomcat,并修改各自server.xml中的端口,保证两者不冲突。 本示例中,tomcat_1的端口为8082 <Connectorport="8082"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> tomcat_2的端口为8083 <Connectorport="8083"protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"/> 准备Session-Manager 大家可以通过如下路径获取Session-Manager的jar包和相关的依赖包,包括common-pool2和Jedis。 https://pan.baidu.com/s/1geZVozx 下载好之后,我们首先将这三个jar包,放到Tomcat目录下的lib文件夹中。 配置Context.xml,添加如下内容,具体的host和port由自己的环境决定。 <ValveclassName="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/> <ManagerclassName="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="xxx.xx.xx.xxx" port="6379" database="0" maxInactiveInterval="60"/> 然后准备一个项目,为了方便,我直接将测试的war中的文件替换了 Tomcat_Home/webapps中的ROOT的内容。也可以通过tomcat自带的examples示例来测试session。 如:http://localhost:8082/examples/servlets/servlet/SessionExample 至此,两个测试的tomat就准备好了,并且已经配置了session管理,由redis来存储。接下来,我们就需要一个Nginx用于负载,配置两个tomcat的信息即可。 准备Nginx 下载Nginx,解压,然后进入Nginx的conf目录,修改nginx.conf文件内容,找到http的部分,添加upstream,就是我们上述提到的两个tomcat。 http{ upstreamtomcat{ serverlocalhost:8082; serverlocalhost:8083; } 本文Nginx的端口为8899, 自己设定了一个。 server{ listen8899; 至此Nginx, Tomcat, Session-Manager, Redis相关的环境就全部准备好了。 接下来,要做的就是启动Nginx, Tomcat, Redis,来看看 session是否存入到Redis中,自己的Web工程能不能正常运行等。 启动Nginx和Tomcat 进入NGINX_HOME/使用nginx命令启动Nginx服务器。 进入两个tomcat_1和tomcat_2,分别启动tomcat。登录自己在ROOT中放置的WEB工程,可以看到session在Redis中存储下来了。 通过Redis-Desktop Manager查看Redis中session的信息。 配置一个Redis从服务器 通过Redis-Desktop Manager查看Redis中session的信息。 为上面的6379主服务器配置一个从服务器6380。 在6380的redis.conf中指定 是6379的slave,如: slaveof127.0.0.16379 启动从服务器: [root@dev18src]#./redis-server../redis.conf _._ _.-``__''-._ _.-```.`_.''-._Redis3.2.3(00000000/0)64bit .-``.-```.```\/_.,_''-._ (',.-`|`,)Runninginstandalonemode |`-._`-...-`__...-.``-._|'`_.-'|Port:6380 |`-._`._/_.-'|PID:14302 `-._`-._`-./_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'|http://redis.io `-._`-._`-.__.-'_.-'_.-' |`-._`-._`-.__.-'_.-'_.-'| |`-._`-.__.-'_.-'| `-._`-._`-.__.-'_.-'_.-' `-._`-.__.-'_.-' `-.__.-' `-.__.-' 14302:S22Dec12:02:55.810#Serverstarted,Redisversion3.2.3 14302:S22Dec12:02:55.810#WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.Tofixthisissueadd'vm.overcommit_memory=1'to/etc/sysctl.confandthenrebootorrunthecommand'sysctlvm.overcommit_memory=1'forthistotakeeffect. 14302:S22Dec12:02:55.810#WARNINGyouhaveTransparentHugePages(THP)supportenabledinyourkernel.ThiswillcreatelatencyandmemoryusageissueswithRedis.Tofixthisissuerunthecommand'echonever>/sys/kernel/mm/transparent_hugepage/enabled'asroot,andaddittoyour/etc/rc.localinordertoretainthesettingafterareboot.RedismustberestartedafterTHPisdisabled. 14302:S22Dec12:02:55.810*Theserverisnowreadytoacceptconnectionsonport6380 14302:S22Dec12:02:55.810*ConnectingtoMASTER127.0.0.1:6379 14302:S22Dec12:02:55.810*MASTER<->SLAVEsyncstarted 14302:S22Dec12:02:55.810*NonblockingconnectforSYNCfiredtheevent. 14302:S22Dec12:02:55.811*MasterrepliedtoPING,replicationcancontinue... 14302:S22Dec12:02:55.811*Partialresynchronizationnotpossible(nocachedmaster) 14302:S22Dec12:02:55.815*Fullresyncfrommaster:c5038d1cbe197bbd8c8fee0e719370eac42bd6bc:1 14302:S22Dec12:02:55.865*MASTER<->SLAVEsync:receiving2741bytesfrommaster 14302:S22Dec12:02:55.865*MASTER<->SLAVEsync:Flushingolddata 14302:S22Dec12:02:55.865*MASTER<->SLAVEsync:LoadingDBinmemory 14302:S22Dec12:02:55.866*MASTER<->SLAVEsync:Finishedwithsuccess 使用Redis-Desktop Manager 可以看到,主服务6379和从服务6380都包含session的相关信息。 文章转自:https://my.oschina.net/wangmengjun/blog/810179

优秀的个人博客,低调大师

tomcat8 redis session共享

备注:项目需要由原本的单机扩容到多机服务,历史原因项目里使用session传参的地方比较多。每一处去修改session,改动量较大,回归测试麻烦,也太耗时间,于是想到用redis存储session的方案。主要是使用了开源方案:redisson github地址: https://github.com/redisson/redisson/tree/master/redisson-tomcat redisson.conf 文件配置: https://github.com/redisson/redisson/wiki/2.-Configuration#26-single-instance-mode 使用方法: 第一步:下载对应的jdk、tomcat版本jar包,一共两个,我下载的是jdk8和tomcat8的:redisson-all-3.7.0.jar、redisson-tomcat-8-3.7.0.jar 第二步:将下载好的jar包上传到tomcat的lib目录下: /usr/local/src/tomcat8/lib 第三步:在/usr/local/src/tomcat8/conf/context.xml 配置redisson.conf 文件目录 <Context> <!-- Default set of monitored resources. If one of these changes, the --> <!-- web application will be reloaded. --> <WatchedResource>WEB-INF/web.xml</WatchedResource> <WatchedResource>${catalina.base}/conf/web.xml</WatchedResource> <!-- Uncomment this to disable session persistence across Tomcat restarts --> <!-- <Manager pathname="" /> --> <!-- <Manager className="org.redisson.tomcat.RedissonSessionManager" configPath="${catalina.base}/redisson.conf" readMode="MEMORY" updateMode="DEFAULT"/> --> <Manager className="org.redisson.tomcat.RedissonSessionManager" configPath="${catalina.base}/redisson.conf" readMode=" REDIS " updateMode="DEFAULT"/> </Context> 备注:配置属性里的readMode和updateMode需要注意(选用redis存储session时,需要将readMode改为REDIS): readMode- read attributes mode. Two modes are available: MEMORY- read attributes stored in local Tomcat Session. Default mode. REDIS- read directly from Redis. updateMode- attributes update mode. Two modes are available: DEFAULT- session attributes are stored into Redis only through setAttribute method. Default mode. AFTER_REQUEST- all session attributes are stored into Redis after each request. 第四步:配置redisson需要的数据信息(参考redisson的wiki文档,我使用的单节点模式,找到相应的配置内容): vi /usr/local/src/tomcat8/redisson.conf (context.xml里配置的 catalina.base 是tomcat的根目录) { "singleServerConfig":{ "idleConnectionTimeout":10000, "pingTimeout":1000, "connectTimeout":10000, "timeout":3000, "retryAttempts":3, "retryInterval":1500, "password":"368902***********************62", "subscriptionsPerConnection":5, "clientName":null, "address": "redis://127.0.0.1:6379", "subscriptionConnectionMinimumIdleSize":1, "subscriptionConnectionPoolSize":50, "connectionMinimumIdleSize":32, "connectionPoolSize":64, "database":0, "dnsMonitoringInterval":5000 }, "threads":0, "nettyThreads":0, "codec":{ "class":"org.redisson.codec.JsonJacksonCodec" }, "transportMode":"NIO" } 第五步:重启tomcat后就可以看到redis里有redisson为key的session缓存数据了

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册